﻿#ifndef W_FIELDMONITOR_H
#define W_FIELDMONITOR_H

#include "stdafx1.h"

#include "Source/Utils/WidgetForm/DialogBase/W_DialogBase.h"
#include "ui_W_FieldMonitor.h"
#include "C_FieldMonitor.h"

/*
-----==========================================================-----
		类：			场监视器 窗口类.h
		作者：			杨骁
		所属模块：		场监视器模块
		功能：			场监视器模块的窗口类对象
-----==========================================================-----
*/
class W_FieldMonitor : public W_DialogBase
{
	Q_OBJECT

	public:
		W_FieldMonitor(QWidget *parent = nullptr);
		~W_FieldMonitor();

	//-----------------------------------
	//----控件
	private:
							//控件 - 监视器类型
		QButtonGroup * m_MonitorTypeGroup = nullptr; // 0:E-Field 1:H-Field and Surface current 2:Farfield/RCS 3:Field source
							//控件 - 规格类型				
		QButtonGroup * m_SpecificationTypeGroup = nullptr; // 0:freq 1:time
	public slots:
		void onMonitorType(int index);
		void onSpecificationType(int index);
							//控件 - 刷新单位
		void refreshUnit();
							//控件 - 添加更多频率
		void btn_addMoreFreq();

							//控件 - 刷新名称
		void refreshUiName();
							//控件 - 获取频域名称
		QString getMonitorName_Freq();
							//控件 - 获取时域名称
		QString getMonitorName_Time();

	//-----------------------------------
	//----模型
	public:
		bool m_slotBlock_model;
		QString m_modelId;
	public:
							//模型 - 刷新模型
		void refreshModel();
							//模型 - 删除模型
		void clearModel();

	//-----------------------------------
	//----窗口
	public:
		bool isAddMode;
		C_FieldMonitor m_FieldMonitor;
	public:
							//窗口 - 设置数据（添加）
		void setDataInAddMode();
							//窗口 - 设置数据（修改）
		void setDataInModifyMode(C_FieldMonitor p);
							//窗口 - 设置三点的数据
		void setDataPoint(QList<double> p1, QList<double> p2, QList<double> p3);
							//窗口 - 取出数据
		C_FieldMonitor getData();
							//窗口 - 本地数据 -> ui数据
		void putDataToUi();
							//窗口 - ui数据 -> 本地数据
		void putUiToData();

	public slots:
							//窗口 - 提交数据（校验）
		void base_acceptData() override;
							//窗口 - 取消数据
		void base_rejectData() override;
							//窗口 - 关闭事件
		void closeEvent(QCloseEvent *e) override;
							//窗口 - 焦点切换
		void onFocusChanged(QWidget *old, QWidget *now);
	signals:
		void acceptDataSignal(bool isAddMode, C_FieldMonitor data);

	//-----------------------------------
	//----UI
	public:
		Ui::W_FieldMonitor *getUI();
	private:
		Ui::W_FieldMonitor *ui;
};

#endif // W_FIELDMONITOR_H

